#region License Info

//Component of Cronos Package, http://www.codeplex.com/cronos
//Copyright (C) 2009 Anthony Brockwell

//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

#endregion


using System;
using ABMath.IridiumExtensions;
using MathNet.Numerics;
using MathNet.Numerics.LinearAlgebra;
using NUnit.Framework;

namespace ABMath.Tests.IridiumExtension
{
    [TestFixture]
    public class PolynomialTest
    {

        #region Setup/Teardown

        [SetUp]
        public void SetUp()
        {
        }

        #endregion


        [Test]
        public void TestIt()
        {
            var p = new Polynomial(new[] {1.0, -0.0296, 0.0177, 0.0618});
            var cb = p.MapToCube(1e-8);
            var p2 = PolynomialExtensions.MapFromCube(cb, 1e-8);
            for (int i=0 ; i<3 ; ++i)
                Assert.Less(Math.Abs(p[i] - p2[i]), 1e-8);
        }

        [Test]
        public void VectorMatrixConversionTest()
        {
            Matrix m = new Matrix(new[] {1.0, 2, 3, 4}, 2);
            Vector v = m.ToVector();
            Matrix m2 = v.ToMatrix(2, 2);
            Assert.AreEqual(m[0, 1], m2[0, 1]);
        }
    }
}
